<template>
	<view>
		<view class="goods-list">
      <view v-for="(item,index) of goodsList" :key="index" @click="gotoDetail(item)">
        <my-goods :goods="item"></my-goods>
      </view>
		</view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				//请求参数对象：
        queryObj:{
          // 查询关键词
          query: '',
          // 商品分类Id
          cid: '',
          // 页码值
          pagenum: 1,
          // 每页显示多少条数据
          pagesize: 10
        },
        // 商品列表的数据
        goodsList: [],
        // 总数量，用来实现分页
        total: 0,
        //设置节流阀
        isLoading: false,        
			};
		},
    onLoad(options){
      //options:    接收请求的参数
      //console.log(options)
      this.queryObj.query = options.query || ''
      this.queryObj.cid = options.cid || ''
      
      //调用获取商品列表信息的方法：
      this.getGoodsList()
    },
    methods:{
      async getGoodsList(cd){
        //开启节流阀：   说明正在发起请求
        this.isLoading = true
        const {data:res} = await uni.$http.get("/api/public/v1/goods/search",this.queryObj)
        //关闭节流阀：  说明请求结束
        this.isLoading = false
        cd && cd()
        if(res.meta.status !== 200) return uni.$showMsg()
        this.goodsList = [...this.goodsList,...res.message.goods]
        this.total = res.message.total
      },
      //点击商品信息跳转到商品详情页面：
      gotoDetail(goods){
        uni.navigateTo({
          url: "/subpck/goods_detail/goods_detail?goods_id="+goods.goods_id
        })
      }
    },
    //上拉触底事件函数
    onReachBottom(){
      //判断数据是否加载完成：
      if(this.queryObj.pagenum * this.queryObj.pagesize >= this.total) return uni.$showMsg("数据加载完成！")
      //判断是否获取下一页的数据：      正在发起请求时，直接return出去
      if(this.isLoading) return
      //页码值加一：
      this.queryObj.pagenum++
      //获取下一页的数据：
      this.getGoodsList()
    },
    //下拉刷新事件函数：
    onPullDownRefresh() {
      //将数据进行重置
      this.queryObj.pagenum = 1
      // 商品列表的数据清空
      this.goodsList = []
      // 总数量
      this.total =  0
      //关闭节流阀
      this.isLoading = false
      //重新发送请求获取第一页的数据：     成功之后关闭下拉刷新
      this.getGoodsList(()=>{uni.stopPullDownRefresh()})
    },
	}
</script>

<style lang="scss">
</style>
